home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / host.arc / HOST.BAS next >
Encoding:
BASIC Source File  |  1986-04-25  |  13.8 KB  |  367 lines

  1. 100 ' SAVE"HOST.BAS '                               VERSION 1.00
  2. 110 '
  3. 120 ' ************************************************************************
  4. 130 ' ************************************************************************
  5. 140 '
  6. 150 ' HOST COMPUTER
  7. 160 '
  8. 170 ' This program provides the capability to access an IBM Personal
  9. 180 ' Computer for the purpose of transmitting or receiving an ASCII
  10. 190 ' file from a remote location. It assumes the use of a Hayes
  11. 200 ' Smartmodem.
  12. 210 '
  13. 220 ' Upon receiving a carrier from the remote location, the program
  14. 230 ' requests the password. It signs off if the correct password is not
  15. 240 ' given in three tries.
  16. 250 '
  17. 260 ' The program recognizes 7 commands from the user at the remote
  18. 270 ' location. They are:
  19. 280 '     A - List the files on drive A.
  20. 290 '     B - List the files on drive B.
  21. 300 '     G - Signoff (GOODBYE).
  22. 310 '     M - Send message.
  23. 320 '     R - Receive a file from the remote location.
  24. 330 '     T - Transmit a file to the remote location.
  25. 340 '     ? - Summarize the commands.
  26. 350 '
  27. 360 ' Received files are opened for APPEND so that data is attached to the
  28. 370 ' end of a previously used file. Also, if in the RECEIVE FILE mode, 15
  29. 380 ' seconds passes with no activity, the user at the remote location is
  30. 390 ' asked if the end of file has been reached. If the answer is in the
  31. 400 ' affirmative or if there is no response within 1 minute, the file is
  32. 410 ' closed and the RECEIVE FILE mode is deactivated.
  33. 420 '
  34. 430 ' The program recognizes 3 commands from the system operator at the IBM
  35. 440 ' PC's location. They are:
  36. 450 '     ALT E      - Echo on / Echo off.
  37. 460 '     CTRL Prtsc - Printout on/ Printout off.
  38. 470 '     ALT M      - Send message to remote location or to Smartmodem.
  39. 480 '
  40. 490 ' An active communications link times out after 5 minutes of inactivity.
  41. 500 '
  42. 510 ' ************************************************************************
  43. 520 ' WILLIAM HT BAILEY          PHONE: 215-924-0771                 JUNE 1982
  44. 522 '
  45. 525 '               DEBUGGED WITH THE HELP OF HOWARD CARTER
  46. 530 ' ************************************************************************
  47. 540 ' ************************************************************************
  48. 1000 '
  49. 1010 '              ------------ INITIALIZATION ------------
  50. 1020 '
  51. 1030 OPTION BASE 1: DIM MSG$(32): DEF SEG: POKE 106,0: CLOSE: CLS: KEY OFF
  52. 1040 DEFINT A-Z: XOFF$=CHR$(19): XON$=CHR$(17): CNT=0: FALSE=0: TRUE=NOT FALSE
  53. 1050 PAUSE=FALSE: PRNT=FALSE: ECHO=FALSE: RECV=FALSE: TRANS=FALSE: MESG=FALSE
  54. 1060 TIMER=FALSE: BYE=FALSE: ACTIVE=FALSE: AA=FALSE: CONNECT=FALSE: LF=FALSE
  55. 1065 OPMSG=FALSE: C$=""
  56. 1070 '
  57. 1080 MSG$(1)=CHR$(13)+CHR$(10)
  58. 1090 MSG$(2)="PASSWORD? "
  59. 1100 MSG$(3)="TRY AGAIN"+MSG$(1)
  60. 1110 MSG$(4)="*** ENTER ? FOR SUMMARY OF COMMANDS ***"+MSG$(1)
  61. 1120 MSG$(5)=">"
  62. 1130 MSG$(6)=MSG$(1)+"FILES A"+MSG$(1)
  63. 1140 MSG$(7)=MSG$(1)+"FILES B"+MSG$(1)
  64. 1150 MSG$(8)="*** GOODBYE ***"+MSG$(1)
  65. 1160 MSG$(9)="ENTER FILENAME IN THE FORMAT   (DRIVE):(FILESPEC) "
  66. 1170 MSG$(10)=MSG$(1)+"*** READY TO RECEIVE FILE ***"+MSG$(1)
  67. 1180 MSG$(11)="RECEPTION SUSPENDED. END OF FILE? (Y/N) "+MSG$(1)+CHR$(7)
  68. 1190 MSG$(12)="*** RECEPTION TERMINATED ***"+MSG$(1)+CHR$(7)
  69. 1200 MSG$(13)=MSG$(1)+"*** TRANSMISSION BEGINNING IN 15 SECONDS ***"+MSG$(1)
  70. 1210 MSG$(14)="    TYPE X TO ABORT TRANSMISSION"+MSG$(1)
  71. 1220 MSG$(15)="*** TRANSMISSION COMPLETE ***"+MSG$(1)+CHR$(7)
  72. 1230 MSG$(16)=MSG$(1)+"      --- SUMMARY OF COMMANDS ---"+MSG$(1)
  73. 1240 MSG$(17)="A - LIST THE FILES ON DRIVE A"+MSG$(1)
  74. 1250 MSG$(18)="B - LIST THE FILES ON DRIVE B"+MSG$(1)
  75. 1260 MSG$(19)="G - SIGNOFF (GOODBYE)"+MSG$(1)
  76. 1270 MSG$(20)="M - SEND MESSAGE"+MSG$(1)
  77. 1280 MSG$(21)="R - RECEIVE A FILE FROM YOUR LOCATION"+MSG$(1)
  78. 1290 MSG$(22)="T - TRANSMIT A FILE TO YOUR LOCATION"+MSG$(1)
  79. 1300 MSG$(23)="? - PRINT THE SUMMARY OF COMMANDS"+MSG$(1)+MSG$(1)
  80. 1310 MSG$(24)="--- FILE NOT FOUND ---"+MSG$(1)
  81. 1320 MSG$(25)="--- DISK IS FULL ---"+MSG$(1)
  82. 1330 MSG$(26)="--- BAD FILE NAME ---"+MSG$(1)
  83. 1340 MSG$(27)="--- TOO MANY FILES ---"+MSG$(1)
  84. 1350 MSG$(28)="--- DISK WRITE PROTECTED ---"+MSG$(1)
  85. 1360 MSG$(29)="--- DISK NOT READY ---"+MSG$(1)
  86. 1370 MSG$(30)="--- ERROR CONDITION ENCOUNTERED ---"+MSG$(1)
  87. 1380 MSG$(31)="ENTER 1 LINE MESSAGE"+MSG$(1)
  88. 1390 MSG$(32)="*** SYSTEM OPERATOR MESSAGE ***"+MSG$(1)+CHR$(7)
  89. 1400 '
  90. 1410 ON ERROR GOTO 2070
  91. 1420 OPEN "COM1:300,E,7,1" AS #1
  92. 1430 '
  93. 1440 LOCATE ,,1: PRINT #1,"**********     HOST COMPUTER ON-LINE        **********"
  94. 1450 PRINT #1,SPACE$(80);
  95. 1460 PRINT #1,"   YOUR NAME & PHONE NUMBER OR ANY THING ELSE IN HERE      "
  96. 1700 '
  97. 1710 ' ***********************************************************************
  98. 1720 '
  99. 1730 '              --------- MAIN PROCESSING LOOP ---------
  100. 1740 '
  101. 1750 B$=INKEY$: IF LEN(B$)>1 THEN  GOSUB 2240
  102. 1760 '
  103. 1770 IF LOF(1)<128 THEN PAUSE=TRUE: PRINT #1,XOFF$;
  104. 1780 IF EOF(1) THEN IF NOT AA THEN PRINT #1,"ATS0=1": AA=TRUE: GOTO 1895             ELSE GOTO 1895
  105. 1790 A$=INPUT$(LOC(1),#1)
  106. 1795 IF LF THEN LF=FALSE: C$=""
  107. 1797 IF LEN(C$)<254 THEN C$=C$+A$
  108. 1800 '
  109. 1810 FOR I=1 TO LEN(A$)
  110. 1820 D$=MID$(A$,I,1)
  111. 1825 IF D$=CHR$(13) OR D$=CHR$(10) THEN LF=TRUE
  112. 1830 IF D$=CHR$(10) THEN GOTO 1870
  113. 1840 IF PRNT AND NOT OPMSG THEN LPRINT D$;
  114. 1850 IF D$=CHR$(8) THEN IF POS(0)>1 THEN LOCATE ,POS(0)-1: PRINT " ";:               LOCATE ,POS(0)-1: GOTO 1870
  115. 1860 PRINT D$;
  116. 1870 NEXT I: IF NOT LF THEN 1895
  117. 1875 '
  118. 1880 GOTO 3050
  119. 1890 '
  120. 1895 IF BYE THEN CNT2=CNT2+1: IF CNT2=1000 THEN 4550
  121. 1900 IF LOC(1)>0 OR BYE THEN 1750
  122. 1910 IF PAUSE THEN PAUSE=FALSE: PRINT #1,XON$;
  123. 1920 IF NOT CONNECT THEN 1750
  124. 1930 IF T1>VAL(MID$(TIME$,4,2))+(VAL(LEFT$(TIME$,2))*60) THEN 1750
  125. 1940 GOTO 4550
  126. 2000 '
  127. 2010 ' ***********************************************************************
  128. 2020 '
  129. 2030 '             ------------- SUBROUTINES --------------
  130. 2040 '
  131. 2050 ' ERROR HANDLER
  132. 2060 '
  133. 2070 M=30
  134. 2080 IF ERR=24 THEN PRINT "*** MODEM NOT READY ***": BEEP: STOP
  135. 2090 IF ERR=69 THEN RESUME
  136. 2100 IF ERR=27 THEN PRINT "PRINTER NOT READY ***": BEEP: RESUME NEXT
  137. 2110 IF ERR=53 THEN M=24
  138. 2120 IF ERR=61 THEN M=25
  139. 2130 IF ERR=64 THEN M=26
  140. 2140 IF ERR=67 THEN M=27
  141. 2150 IF ERR=70 THEN M=28
  142. 2160 IF ERR=71 THEN M=29
  143. 2170 IF M<>30 THEN PRINT MSG$(M): BEEP: GOTO 2190
  144. 2180 PRINT "--- ERROR";ERR;" ENCOUNTERED ON LINE";ERL;" ---": BEEP
  145. 2190 PRINT #1,MSG$(M);: IF PRNT THEN LPRINT MSG$(M);
  146. 2200 RECV=FALSE: TRANS=FALSE: CLOSE #2: RESUME 4160
  147. 2210 '
  148. 2220 ' SYSTEM OPERATOR COMMAND
  149. 2230 '
  150. 2240 CODE=ASC(MID$(B$,2,1))
  151. 2250 '
  152. 2260 IF CODE<>18 THEN 2300
  153. 2270 IF ECHO=FALSE THEN ECHO=TRUE: BEEP: PRINT "--- ECHO ON ---": RETURN
  154. 2280 ECHO=FALSE: BEEP: PRINT "--- ECHO OFF ---": RETURN
  155. 2290 '
  156. 2300 IF CODE<>114 THEN 2340
  157. 2310 IF PRNT=FALSE THEN PRNT=TRUE: BEEP: PRINT "--- PRINTOUT ON ---": RETURN
  158. 2320 PRNT=FALSE: BEEP: PRINT "--- PRINTOUT OFF ---": RETURN
  159. 2330 '
  160. 2340 IF CODE<>50 THEN RETURN
  161. 2350 PRINT #1,MSG$(32);: IF PRNT THEN LPRINT MSG$(32);
  162. 2355 IF ECHO THEN PRINT MSG$(32);
  163. 2360 IF NOT PAUSE THEN PRINT #1,XOFF$;
  164. 2370 B$=INKEY$
  165. 2380 IF LEN(B$)>1 THEN 2370
  166. 2390 IF B$="" THEN 2370 ELSE PRINT #1,B$;
  167. 2400 IF ECHO THEN PRINT B$;
  168. 2410 IF PRNT THEN LPRINT B$;
  169. 2420 IF B$<>CHR$(10) AND B$<>CHR$(13) THEN 2370
  170. 2430 IF NOT PAUSE THEN PRINT #1,XON$;
  171. 2435 OPMSG=TRUE
  172. 2440 RETURN
  173. 3000 '
  174. 3010 ' ***********************************************************************
  175. 3020 '
  176. 3030 '             ------------ COMMAND DECODE ------------
  177. 3040 '
  178. 3050 IF MESG THEN MESG=FALSE: GOTO 4160
  179. 3060 IF ACTIVE THEN 3130
  180. 3070 IF CONNECT THEN 3100
  181. 3080 '
  182. 3090 IF INSTR(C$,"NECT")<>0 THEN CONNECT=TRUE: GOTO 4050 ELSE GOTO 1900
  183. 3100 IF INSTR(C$,"WORD")<>0 OR INSTR(C$,"word")<>0 THEN VALID=TRUE: GOTO 4080
  184. 3110 VALID=FALSE: GOTO 4080
  185. 3120 '
  186. 3130 IF RECV OR TRANS THEN 3280
  187. 3140 IF BYE THEN 4550
  188. 3150 '
  189. 3160 IF OPMSG THEN OPMSG=FALSE: GOTO 4160
  190. 3165 IF INSTR(C$,"CARRIER")<>0 THEN BYE=TRUE: GOTO 4550
  191. 3170 IF INSTR(C$,"M")<>0 OR INSTR(C$,"m")<>0 THEN 5150
  192. 3180 IF INSTR(C$,"?")<>0 THEN 5200
  193. 3190 IF INSTR(C$,"A")<>0 OR INSTR(C$,"a")<>0 THEN C$="A": M=6: GOTO 5070
  194. 3200 IF INSTR(C$,"B")<>0 OR INSTR(C$,"b")<>0 THEN C$="B": M=7: GOTO 5070
  195. 3210 IF INSTR(C$,"R")<>0 OR INSTR(C$,"r")<>0 THEN 6050
  196. 3220 IF INSTR(C$,"T")<>0 OR INSTR(C$,"t")<>0 THEN 7050
  197. 3230 IF INSTR(C$,"G")<>0 OR INSTR(C$,"g")<>0 THEN 4550
  198. 3240 PRINT #1,MSG$(3);: IF PRNT THEN LPRINT MSG$(3);
  199. 3250 IF ECHO THEN PRINT MSG$(3);
  200. 3260 GOTO 4160
  201. 3270 '
  202. 3280 M=INSTR(C$,"A:"): IF M<>0 THEN 3330
  203. 3290 M=INSTR(C$,"a:"): IF M<>0 THEN 3330
  204. 3300 M=INSTR(C$,"B:"): IF M<>0 THEN 3330
  205. 3310 M=INSTR(C$,"b:"): IF M=0 THEN 3240
  206. 3320 '
  207. 3330 F$=MID$(C$,M,14)
  208. 3340 IF RIGHT$(F$,1)=CHR$(10) OR RIGHT$(F$,1)=CHR$(13) THEN F$=                      LEFT$(F$,LEN(F$)-1): GOTO 3340
  209. 3350 IF RECV THEN 6080 ELSE GOTO 7080
  210. 4000 '
  211. 4010 ' ***********************************************************************
  212. 4020 '
  213. 4030 '              --------------- SIGN ON ----------------
  214. 4040 '
  215. 4050 PRINT #1,MSG$(2);: IF PRNT THEN LPRINT MSG$(2);
  216. 4055 IF ECHO THEN PRINT MSG$(2);
  217. 4060 T1=VAL(MID$(TIME$,4,2))+(VAL(LEFT$(TIME$,2))*60)+2: GOTO 1900
  218. 4070 '
  219. 4080 IF VALID THEN 4130
  220. 4085 IF INSTR(C$,"CARRIER")<>0 THEN 4655
  221. 4090 CNT=CNT+1: IF CNT>=3 THEN 4550
  222. 4100 PRINT #1,MSG$(3);: IF PRNT THEN LPRINT MSG$(3);
  223. 4105 IF ECHO THEN PRINT MSG$(3);
  224. 4110 GOTO 1900
  225. 4120 '
  226. 4130 ACTIVE=TRUE
  227. 4140 PRINT #1,MSG$(4);: IF PRNT THEN  LPRINT MSG$(4);
  228. 4145 IF ECHO THEN PRINT MSG$(4);
  229. 4150 '
  230. 4151 ' COME HERE AFTER PROCESSING A COMMAND
  231. 4152 '
  232. 4160 PRINT #1,MSG$(5);: IF PRNT THEN LPRINT MSG$(5);
  233. 4165 IF ECHO THEN PRINT MSG$(5);
  234. 4170 '
  235. 4180 ' SET TIMEOUT CLOCK
  236. 4190 '
  237. 4200 T1=VAL(MID$(TIME$,4,2))+(VAL(LEFT$(TIME$,2))*60)+5: GOTO 1900
  238. 4500 '
  239. 4510 ' ***********************************************************************
  240. 4520 '
  241. 4530 '              --------------- SIGN OFF ---------------
  242. 4540 '
  243. 4550 IF BYE THEN 4635
  244. 4560 PRINT #1,MSG$(8);: IF PRNT THEN LPRINT MSG$(8);
  245. 4565 IF ECHO THEN PRINT MSG$(8);
  246. 4570 '
  247. 4580 FOR I=1 TO 2000: NEXT I
  248. 4590 PRINT #1,"+++";: IF ECHO THEN PRINT "+++"
  249. 4600 FOR I=1 TO 2000: NEXT I
  250. 4610 '
  251. 4620 CNT2=0: BYE=TRUE: GOTO 1900
  252. 4630 '
  253. 4635 IF INSTR(C$,"CARRIER")<>0 THEN 4655
  254. 4640 IF INSTR(C$,"OK")=0 THEN 4580
  255. 4655 BYE=FALSE: CONNECT=FALSE: ACTIVE=FALSE: CNT=0
  256. 4660 CLS: PRINT "********** HOST COMPUTER program active **********"
  257. 4665 PRINT #1,"ATH"
  258. 4670 GOTO 1750
  259. 5000 '
  260. 5010 ' ***********************************************************************
  261. 5020 '
  262. 5030 '              ----------- COMMANDS A,B,M,? -----------
  263. 5040 '
  264. 5050 ' LIST FILES (Modifications necessary if using graphics display.)
  265. 5060 '
  266. 5070 CLS: PRINT #1,MSG$(M);
  267. 5080 FILES C$+":*.*": PRINT: DEF SEG=&HB000: FOR I=0 TO (80*(CSRLIN-1)-1)
  268. 5090 B$=CHR$(PEEK(2*I)): PRINT #1,B$;: IF PRNT THEN LPRINT B$;
  269. 5095 NEXT I
  270. 5100 PRINT #1,MSG$(1);: IF PRNT THEN LPRINT MSG$(1);
  271. 5105 IF ECHO THEN PRINT MSG$(1);
  272. 5110 GOTO 4160
  273. 5120 '
  274. 5130 ' USER MESSAGE
  275. 5140 '
  276. 5150 PRINT "*** USER MESSAGE ***": BEEP: PRINT #1,MSG$(31);
  277. 5160 IF PRNT THEN LPRINT "*** USER MESSAGE ***"
  278. 5165 MESG=TRUE: GOTO 4160
  279. 5170 '
  280. 5180 ' LIST SUMMARY OF COMMANDS
  281. 5190 '
  282. 5200 FOR M=16 TO 23
  283. 5210 PRINT #1,MSG$(M);: IF PRNT THEN LPRINT MSG$(M);
  284. 5215 IF ECHO THEN PRINT MSG$(M);
  285. 5220 NEXT M: GOTO 4160
  286. 6000 '
  287. 6010 ' ***********************************************************************
  288. 6020 '
  289. 6030 '              ------------- RECEIVE FILE -------------
  290. 6040 '
  291. 6050 PRINT #1,MSG$(9);: IF PRNT THEN LPRINT MSG$(9);
  292. 6055 IF ECHO THEN PRINT MSG$(9);
  293. 6060 RECV=TRUE: GOTO 1900
  294. 6070 '
  295. 6080 OPEN F$ FOR APPEND AS #2
  296. 6090 PRINT #1,MSG$(10);: IF PRNT THEN LPRINT MSG$(10);
  297. 6095 IF ECHO THEN PRINT MSG$(10);
  298. 6100 '
  299. 6110 B$=INKEY$: IF LEN(B$)>1 THEN GOSUB 2240
  300. 6115 IF OPMSG THEN OPMSG=FALSE
  301. 6120 '
  302. 6130 IF LOF(1)<128 THEN PAUSE=TRUE: PRINT #1,XOFF$;
  303. 6140 IF EOF(1) THEN IF TIMER THEN 6270 ELSE GOTO 6220
  304. 6145 IF TIMER THEN TIMER=FALSE
  305. 6150 A$=INPUT$(LOC(1),#1): PRINT #2,A$;
  306. 6152 FOR I=1 TO LEN(A$): D$=MID$(A$,I,1)
  307. 6154 IF D$=CHR$(10) THEN 6158
  308. 6156 IF ECHO THEN PRINT D$;
  309. 6158 NEXT I
  310. 6160 IF LOC(1)>0 THEN 6130
  311. 6170 IF PAUSE THEN PAUSE=FALSE: PRINT #1,XON$;
  312. 6180 GOTO 6110
  313. 6190 '
  314. 6200 ' SET TIMEOUT CLOCK
  315. 6210 '
  316. 6220 T2=VAL(RIGHT$(TIME$,2))+(VAL(MID$(TIME$,4,2))*60)+15
  317. 6230 TIMER=TRUE: GOTO 6110
  318. 6240 '
  319. 6250 ' CHECK TIMEOUT CLOCK
  320. 6260 '
  321. 6270 IF T2>VAL(RIGHT$(TIME$,2))+(VAL(MID$(TIME$,4,2))*60) THEN 6110
  322. 6280 '
  323. 6290 ' END OF FILE?
  324. 6300 '
  325. 6310 PRINT #1,MSG$(11);: IF PRNT THEN LPRINT MSG$(11);
  326. 6315 IF ECHO THEN PRINT MSG$(11);
  327. 6320 T3=VAL(MID$(TIME$,4,2))+(VAL(LEFT$(TIME$,2))*60)+1
  328. 6330 IF T3<VAL(MID$(TIME$,4,2))+(VAL(LEFT$(TIME$,2))*60) THEN 6370
  329. 6340 IF EOF(1) THEN 6330
  330. 6350 B$=INPUT$(LOC(1),#1): IF INSTR(B$,"Y")=0 AND INSTR(B$,"y")=0 THEN               TIMER=FALSE: GOTO 6110
  331. 6360 '
  332. 6370 PRINT #1,MSG$(12);: IF PRNT THEN LPRINT MSG$(12);
  333. 6375 IF ECHO THEN PRINT MSG$(12);
  334. 6380 CLOSE #2: RECV=FALSE: TIMER=FALSE: GOTO 4160
  335. 7000 '
  336. 7010 ' ***********************************************************************
  337. 7020 '
  338. 7030 '              ------------- TRANSMIT FILE -------------
  339. 7040 '
  340. 7050 PRINT #1,MSG$(9);: IF PRNT THEN LPRINT MSG$(9);
  341. 7055 IF ECHO THEN PRINT MSG$(9);
  342. 7060 TRANS=TRUE: GOTO 1900
  343. 7070 '
  344. 7080 OPEN F$ FOR INPUT AS #2: FOR M=13 TO 14
  345. 7090 PRINT #1,MSG$(M);: IF PRNT THEN LPRINT MSG$(M);
  346. 7095 IF ECHO THEN PRINT MSG$(M);
  347. 7100 NEXT M: FOR I=1 TO 14000: NEXT I
  348. 7110 '
  349. 7120 B$=INKEY$: IF LEN(B$)>1 THEN GOSUB 2240
  350. 7125 IF OPMSG THEN OPMSG=FALSE
  351. 7130 '
  352. 7140 IF EOF(2) THEN 7210
  353. 7150 A$=INPUT$(1,#2): PRINT #1,A$;
  354. 7160 IF A$<>CHR$(10) AND ECHO THEN PRINT A$;
  355. 7170 '
  356. 7180 IF EOF(1) THEN 7120
  357. 7190 B$=INPUT$(LOC(1),#1): IF INSTR(B$,"X")<>0 OR INSTR(B$,"x")<>0 THEN 7210
  358. 7195 IF INSTR(B$,"CARRIER")<>0 THEN CLOSE #2: TRANS=FALSE: GOTO 4655
  359. 7200 '
  360. 7210 PRINT #1,MSG$(15);: IF PRNT THEN LPRINT MSG$(15);
  361. 7215 IF ECHO THEN PRINT MSG$(15);
  362. 7220 CLOSE #2: TRANS=FALSE: GOTO 4160
  363. 9996 '
  364. 9997 ' **********************************************************************
  365. 9998 ' **********************************************************************
  366. 9999 END
  367.